package com.cy.ppj.service.enter;

import com.cy.ppj.model.PageBean;
import com.cy.ppj.model.ao.enter.*;
import com.cy.ppj.model.dto.enter.EnterCorporateProfitListSaveDTO;
import com.cy.ppj.model.dto.enter.EnterFinanceInfoListSaveDTO;
import com.cy.ppj.model.dto.shuidai.EnterEvaluateRequestParamDTO;
import com.cy.ppj.model.query.enter.EnterEvaluateRecordListQuery;
import com.cy.ppj.model.query.enter.EnterListQuery;
import com.cy.ppj.model.vo.enter.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * @Description 企业 service
 * @Author tanyilin
 * @Date 2019/4/25 14:15
 */
public interface EnterService {

    /**
     * 后台-查询企业详情结果
     * @param queryAO
     * @return com.cy.ppj.model.vo.enter.EnterDetailVO
     */
    EnterDetailVO getEnterDetail(EnterDetailQueryAO queryAO);

    /**
     * 查询企业基本信息
     * @param enterId
     * @return com.cy.mall.model.ao.enter.EnterBaseInfoDetailVO
     */
    EnterBaseInfoDetailVO getEnterBaseInfo(Long enterId);

    /**
     * 保存企业基本信息
     * @param saveAO
     * @return void
     */
    void doSaveEnterBaseInfo(EnterBaseInfoSaveAO saveAO);

    /**
     * 查询企业-股东信息
     * @param enterId
     * @return java.util.List<com.cy.mall.model.vo.enter.EnterShareholderInfoVO>
     */
    List<EnterShareholderInfoVO> getEnterShareholderInfo(Long enterId);

    /**
     * 保存企业-股东信息
     * @param saveAO
     * @return void
     */
    void doSaveShareholderInfo(EnterShareholderInfoSaveAO saveAO);

    /**
     * 获取企业-管理人员信息
     * @param enterId
     * @return java.util.List<com.cy.mall.model.vo.enter.EnterManagerInfoVO>
     */
    List<EnterManagerInfoVO> getEnterManagerInfo(Long enterId);

    /**
     * 保存企业-管理人员信息
     * @param saveAO
     * @return void
     */
    void doSaveEnterManagerInfo(EnterManagerInfoSaveAO saveAO);

    /**
     * 获取企业-对外投资信息
     * @param enterId
     * @return java.util.List<com.cy.mall.model.vo.enter.EnterInvestmentInfoVO>
     */
    List<EnterInvestmentInfoVO> getEnterInvestmentInfo(Long enterId);

    /**
     * 保存企业-对外投资信息
     * @param saveAO
     * @return void
     */
    void doSaveEnterInvestmentInfo(EnterInvestmentInfoSaveAO saveAO);

    /**
     * 获取 企业-申报数据明细
     * @param enterId
     * @return java.util.List<com.cy.mall.model.vo.enter.EnterDeclareDataDetailVO>
     */
    List<EnterDeclareDataDetailVO> getEnterDeclareDataDetail(Long enterId);

    /**
     * 保存 企业-申报数据明细
     * @param saveAO
     * @return void
     */
    void doSaveEnterDeclareDataDetail(EnterDeclareDataDetailSaveAO saveAO);

    /**
     * 根据 enterId 查询企业 财务报表 信息
     * @param enterId
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> getEnterFinanceInfo(Long enterId);

    /**
     * 解析 财务报表Excel 文件，得到 财务报表 数据
     * @param multipartFile
     * @return java.util.List<com.cy.ppj.model.dto.enter.EnterFinanceInfoListSaveDTO>
     */
    List<EnterFinanceInfoListSaveDTO> getFinanceInfoListSaveDTO(MultipartFile multipartFile);

    /**
     * 保存 企业-财务报表信息
     * @param financeInfoList
     * @param enterId
     * @return void
     */
    void doSaveEnterFinanceInfo(List<EnterFinanceInfoListSaveDTO> financeInfoList, Long enterId);

    /**
     * 根据 enterId 查询企业 利润 报表
     * @param enterId
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> getEnterCorporateProfit(Long enterId);

    /**
     *  解析 利润报表Excel 文件，得到 利润报表 数据
     * @param multipartFile
     * @return java.util.List<com.cy.ppj.model.dto.enter.EnterCorporateProfitListSaveDTO>
     */
    List<EnterCorporateProfitListSaveDTO> getCorporateProfitListSaveDTO(MultipartFile multipartFile);

    /**
     * 保存 企业-利润报表信息
     * @param corporateProfitList
     * @param enterId
     * @return void
     */
    void doSaveEnterCorporateProfit(List<EnterCorporateProfitListSaveDTO> corporateProfitList, Long enterId);

    /**
     * 查询得到请求第三方税贷 进行 企业评估 接口的参数
     * @param enterId
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> getEnterEvaluateRequestParam(Long enterId);

    /**
     * 保存 企业评估记录结果
     * @param resultMap
     * @return void
     */
    void doSaveEvaluateRecord(Map<String, Object> resultMap);

    /**
     * 后台-企业列表
     * @param query
     * @return com.cy.ppj.model.PageBean<com.cy.ppj.model.vo.enter.EnterListVO>
     */
    PageBean<EnterListVO> selectEnterList(EnterListQuery query);

    /**
     * 后台-企业评估记录
     * @param query
     * @return com.cy.ppj.model.PageBean<com.cy.ppj.model.vo.enter.EnterEvaluateRecordListVO>
     */
    PageBean<EnterEvaluateRecordListVO> selectEnterEvaluateRecordList(EnterEvaluateRecordListQuery query);
}
